Referring to FIG. 1, a diagram of a network device, in accordance with the conventional art, is shown. As depicted in FIG. 1, the network device 110 (e.g. computer, workstation, server, or the like) comprises one or more interface modules 120, one or more protocol stacks 130, and one or more applications 140. The interface module 120 provides for receipt of data packets 150 transmitted on a communication channel 160. The protocol stack 130 provides for processing of the data packets 150 destined for the application 140. The application 140 (e.g. database systems, text editors, games, and the like) provides users with various functions.
Each data packet 150 is comprised of a header 170 and a payload 180. The interface module 120 acquires each data packet 150 and stores it in a buffer. The interface module 120 generates an interrupt upon acquiring a data packet 150. An operating system of the network device 110 catches the interrupt and spins off a thread of execution to handle the interrupt. The thread of execution represents one or more sequences of instructions (e.g., code) comprising the applicable protocol stack (e.g. DLPI, IP protocol, TCP protocol, and/or the like). The interrupt therefore causes the protocol stack 130 to receive the data packet and provide for routing and flow control. The thread then delivers the payload 180 of the data packet 150 to the destination application 140 in accordance with information contained in the header 170.
The protocol stack 130 provides a network communication protocol, such as the transmission control protocol/internet protocol (TCP/IP) suite, or the like. The TCP/IP protocol suite is typically divided into three layers: transport layer, internet layer, and network access layer. The transport layer (TCP) provides a flow control protocol. The flow control protocol keeps track of data packets to assure reliable delivery to an intended destination application. It includes explicit and acknowledged connection initiation and termination, reliable in-order unduplicated delivery of data, and out of band indication of urgent data. The internet layer (IP) provides an addressing and routing protocol. The addressing and routing protocol includes host-to-host addressing and routing of data packets, data packet fragmentation, and re-assembly. The network access layer provides a receive protocol, such as data link provider interface (DLPI), or the like. The receive protocol provides access to and transmission of data across a communication channel 160.
According to the conventional art, the thread of execution spans the receive stream, from the interface module 120 to the application 140. The single thread of execution provides the payload 180 to the application 140 as quickly as possible. Thus, according to the conventional art, the single thread of execution provides for short data latency when receiving data packets 150. However, while the thread is being executed the protocol stack 130 cannot service another data packet 150. Therefore, the interface module 120 buffers other incoming data packets 150 until the protocol stack 130 can service another data packet 150. The interface module 120, however, has a finite buffer for holding data packets 150. Therefore, if the data packets 150 are received faster then the protocol stack 130 can process them, the interface module 120 will drop data packets 150 once its buffer is full.
Thus, the network device 110 is prone to reduced throughput when the data packet traffic speed exceeds the speed at which the network device 110 can process incoming data packets. Hence, there is a continued need for a network communication method capable of providing for increased network throughput.